The present methods for interprocess communication (IPC) in computer systems include the use of shared memory, semaphores, queues, pipes and named pipes, to name most of the primary methods. The characteristics of these various methods of IPC are summarized in an article, TALKING TASKS, which appears in the November 1990 issue of BYTE magazine, beginning at page 403.
This disclosure is concerned with the use of named communication channels or named pipes. One scenario involving the use of named pipes for interprocess communication is message distribution. In some systems, for example, a message server receives message from other processes running in the system and distributes the messages to still other processes that wish to receive the messages. This technique is commonly used in windowed operating systems, such as the OS/2 (trademark of IBM, Inc.) operating system for-desktop computers. One standard technique of using named pipes in such an operating system is for the message server to distribute a message to every process that may wish it and let each receiving process decide if the message contains information of interest to it. This is called the broadcast technique. A second standard technique is to maintain a registry of processes and the specific type of message each of the registered processes wish to receive. This may be referred to as the registry approach. Clearly, the broadcasting technique creates a large amount of wasted traffic within a computer. Examples of the latter registry approach are described in another article, INTERPROCESS COMMUNICATION IN THE NINTH EDITION UNIX SYSTEM, which is published in Software-Practice and Experience, Vol. 20(S1), pages S1/3-S1/17, June 1990, by David Presotto and Dennis Ritchie. For example, a connection server, which uses a registry approach, is described beginning at page S1/10 of the article. In this example, a server process creates a pipe and advertises its services and its pipe to other processes. When a client process wishes to avail itself of a service, it connects to the pipe and transmits to the server some identification for registration, plus an identification of the type of service that is desired. This type of service might be a request to receive certain types of system messages.
A variation on the registry method is described in the article PORTABLE IPC ON VANILLA UNIX, Mark Rain, Penobscot Research Center, Deer Isle, Me. 04627. This paper describes a channel server whose service is to handout IPC channels and to act as a server registry for client processes. A server acquires and IPC channel (pipe) from the channel service. Then it registers itself with the channel service, together with an indication of the service it offers.
The various registry approaches can be awkward to maintain for certain purposes. For example, if a registered process terminates abnormally, the registration with the server process that maintains the registry is not automatically removed without special arrangements to trap this condition. Moreover, the broadcast and registry techniques consume substantial resources, which it would be desirable to reduce.